<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>eRPC API Reference: erpc::TransportArbitrator Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">eRPC API Reference
   &#160;<span id="projectnumber">Rev. 1.7.4</span>
   </div>
   <div id="projectbrief">NXP Semiconductors</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>API&#160;Reference</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classerpc_1_1_transport_arbitrator.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classerpc_1_1_transport_arbitrator-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">erpc::TransportArbitrator Class Reference<div class="ingroups"><a class="el" href="group__infra.html">Infrastructure</a> &raquo; <a class="el" href="group__infra__transport.html">Transports</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Interposer to share transport between client and server.  
 <a href="classerpc_1_1_transport_arbitrator.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="erpc__transport__arbitrator_8h_source.html">erpc_transport_arbitrator.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for erpc::TransportArbitrator:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="classerpc_1_1_transport_arbitrator__inherit__graph.svg" width="174" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for erpc::TransportArbitrator:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="classerpc_1_1_transport_arbitrator__coll__graph.svg" width="1207" height="266"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request info for a client trying to receive a response.  <a href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a1fc8ee09230e9b0b68c44e013a09c1ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fc8ee09230e9b0b68c44e013a09c1ca"></a>
typedef uintptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1fc8ee09230e9b0b68c44e013a09c1ca">client_token_t</a></td></tr>
<tr class="memdesc:a1fc8ee09230e9b0b68c44e013a09c1ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a single client's receive request. <br /></td></tr>
<tr class="separator:a1fc8ee09230e9b0b68c44e013a09c1ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a036683937acdb539f8fbc44995120648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a036683937acdb539f8fbc44995120648"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a036683937acdb539f8fbc44995120648">TransportArbitrator</a> (void)</td></tr>
<tr class="memdesc:a036683937acdb539f8fbc44995120648"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:a036683937acdb539f8fbc44995120648"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a458fc9b25401c8092829717a40b23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78a458fc9b25401c8092829717a40b23"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a78a458fc9b25401c8092829717a40b23">~TransportArbitrator</a> (void)</td></tr>
<tr class="memdesc:a78a458fc9b25401c8092829717a40b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a78a458fc9b25401c8092829717a40b23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70264ee3caa115ea56ec5333a0132394"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a70264ee3caa115ea56ec5333a0132394">setSharedTransport</a> (<a class="el" href="classerpc_1_1_transport.html">Transport</a> *shared)</td></tr>
<tr class="memdesc:a70264ee3caa115ea56ec5333a0132394"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function set shared client/server transport.  <a href="#a70264ee3caa115ea56ec5333a0132394">More...</a><br /></td></tr>
<tr class="separator:a70264ee3caa115ea56ec5333a0132394"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af16c7af785a26649dc822a025b8bdd27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#af16c7af785a26649dc822a025b8bdd27">setCodec</a> (<a class="el" href="classerpc_1_1_codec.html">Codec</a> *codec)</td></tr>
<tr class="memdesc:af16c7af785a26649dc822a025b8bdd27"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function set codec.  <a href="#af16c7af785a26649dc822a025b8bdd27">More...</a><br /></td></tr>
<tr class="separator:af16c7af785a26649dc822a025b8bdd27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57178dc83b44f3147edf84560ada7650"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57178dc83b44f3147edf84560ada7650"></a>
virtual <a class="el" href="group__infra.html#ga5f8872e58f09a16d192bf664f9898651">erpc_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a57178dc83b44f3147edf84560ada7650">receive</a> (<a class="el" href="classerpc_1_1_message_buffer.html">MessageBuffer</a> *message)</td></tr>
<tr class="memdesc:a57178dc83b44f3147edf84560ada7650"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive method for the server. <br /></td></tr>
<tr class="separator:a57178dc83b44f3147edf84560ada7650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67fb2d8bab8f754bf07d2caefff86b7d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1fc8ee09230e9b0b68c44e013a09c1ca">client_token_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a67fb2d8bab8f754bf07d2caefff86b7d">prepareClientReceive</a> (<a class="el" href="classerpc_1_1_request_context.html">RequestContext</a> &amp;request)</td></tr>
<tr class="memdesc:a67fb2d8bab8f754bf07d2caefff86b7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a client request to the client list.  <a href="#a67fb2d8bab8f754bf07d2caefff86b7d">More...</a><br /></td></tr>
<tr class="separator:a67fb2d8bab8f754bf07d2caefff86b7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba5660b83cd5f9ca55eaa362c84c7916"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infra.html#ga5f8872e58f09a16d192bf664f9898651">erpc_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#aba5660b83cd5f9ca55eaa362c84c7916">clientReceive</a> (<a class="el" href="classerpc_1_1_transport_arbitrator.html#a1fc8ee09230e9b0b68c44e013a09c1ca">client_token_t</a> token)</td></tr>
<tr class="memdesc:aba5660b83cd5f9ca55eaa362c84c7916"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive method for the client.  <a href="#aba5660b83cd5f9ca55eaa362c84c7916">More...</a><br /></td></tr>
<tr class="separator:aba5660b83cd5f9ca55eaa362c84c7916"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afceb02fe214a1e64856b458e701c6390"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afceb02fe214a1e64856b458e701c6390"></a>
virtual <a class="el" href="group__infra.html#ga5f8872e58f09a16d192bf664f9898651">erpc_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#afceb02fe214a1e64856b458e701c6390">send</a> (<a class="el" href="classerpc_1_1_message_buffer.html">MessageBuffer</a> *message)</td></tr>
<tr class="memdesc:afceb02fe214a1e64856b458e701c6390"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shared client/server send method. <br /></td></tr>
<tr class="separator:afceb02fe214a1e64856b458e701c6390"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af252715a89e05928feb33c1e7f8c7cc7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#af252715a89e05928feb33c1e7f8c7cc7">setCrc16</a> (<a class="el" href="classerpc_1_1_crc16.html">Crc16</a> *crcImpl)</td></tr>
<tr class="memdesc:af252715a89e05928feb33c1e7f8c7cc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This functions sets the CRC-16 implementation.  <a href="#af252715a89e05928feb33c1e7f8c7cc7">More...</a><br /></td></tr>
<tr class="separator:af252715a89e05928feb33c1e7f8c7cc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classerpc_1_1_transport"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classerpc_1_1_transport')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classerpc_1_1_transport.html">erpc::Transport</a></td></tr>
<tr class="memitem:af0b6b9c50d238f99de90ccd8b6050c91 inherit pub_methods_classerpc_1_1_transport"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0b6b9c50d238f99de90ccd8b6050c91"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport.html#af0b6b9c50d238f99de90ccd8b6050c91">Transport</a> (void)</td></tr>
<tr class="memdesc:af0b6b9c50d238f99de90ccd8b6050c91 inherit pub_methods_classerpc_1_1_transport"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:af0b6b9c50d238f99de90ccd8b6050c91 inherit pub_methods_classerpc_1_1_transport"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cb1c4441873bce62f2ef455a6136888 inherit pub_methods_classerpc_1_1_transport"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cb1c4441873bce62f2ef455a6136888"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport.html#a0cb1c4441873bce62f2ef455a6136888">~Transport</a> (void)</td></tr>
<tr class="memdesc:a0cb1c4441873bce62f2ef455a6136888 inherit pub_methods_classerpc_1_1_transport"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classerpc_1_1_transport.html" title="Abstract interface for transport layer. ">Transport</a> destructor. <br /></td></tr>
<tr class="separator:a0cb1c4441873bce62f2ef455a6136888 inherit pub_methods_classerpc_1_1_transport"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea4a3b77e476397c2f665e7c9449839a inherit pub_methods_classerpc_1_1_transport"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport.html#aea4a3b77e476397c2f665e7c9449839a">hasMessage</a> (void)</td></tr>
<tr class="memdesc:aea4a3b77e476397c2f665e7c9449839a inherit pub_methods_classerpc_1_1_transport"><td class="mdescLeft">&#160;</td><td class="mdescRight">Poll for an incoming message.  <a href="#aea4a3b77e476397c2f665e7c9449839a">More...</a><br /></td></tr>
<tr class="separator:aea4a3b77e476397c2f665e7c9449839a inherit pub_methods_classerpc_1_1_transport"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a9adeefc97b7e3fa1fdabf36739ad1715"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a9adeefc97b7e3fa1fdabf36739ad1715">addPendingClient</a> (void)</td></tr>
<tr class="memdesc:a9adeefc97b7e3fa1fdabf36739ad1715"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function adds pending client.  <a href="#a9adeefc97b7e3fa1fdabf36739ad1715">More...</a><br /></td></tr>
<tr class="separator:a9adeefc97b7e3fa1fdabf36739ad1715"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e2fe51df4bf80ec12718b1754dc42c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a7e2fe51df4bf80ec12718b1754dc42c5">removePendingClient</a> (<a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *info)</td></tr>
<tr class="memdesc:a7e2fe51df4bf80ec12718b1754dc42c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function removes pending client.  <a href="#a7e2fe51df4bf80ec12718b1754dc42c5">More...</a><br /></td></tr>
<tr class="separator:a7e2fe51df4bf80ec12718b1754dc42c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b725cac5a35715e0676e92a6c02114"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a17b725cac5a35715e0676e92a6c02114">freeClientList</a> (<a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *list)</td></tr>
<tr class="memdesc:a17b725cac5a35715e0676e92a6c02114"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function removes pending client list.  <a href="#a17b725cac5a35715e0676e92a6c02114">More...</a><br /></td></tr>
<tr class="separator:a17b725cac5a35715e0676e92a6c02114"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a4e9b344383fb911215166335c3eb5a94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e9b344383fb911215166335c3eb5a94"></a>
<a class="el" href="classerpc_1_1_transport.html">Transport</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a4e9b344383fb911215166335c3eb5a94">m_sharedTransport</a></td></tr>
<tr class="memdesc:a4e9b344383fb911215166335c3eb5a94"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classerpc_1_1_transport.html" title="Abstract interface for transport layer. ">Transport</a> being shared through this arbitrator. <br /></td></tr>
<tr class="separator:a4e9b344383fb911215166335c3eb5a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a791cd193b978fc2d8c01369f1f931987"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a791cd193b978fc2d8c01369f1f931987"></a>
<a class="el" href="classerpc_1_1_codec.html">Codec</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a791cd193b978fc2d8c01369f1f931987">m_codec</a></td></tr>
<tr class="memdesc:a791cd193b978fc2d8c01369f1f931987"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classerpc_1_1_codec.html" title="Abstract serialization encoder/decoder interface. ">Codec</a> used to read incoming message headers. <br /></td></tr>
<tr class="separator:a791cd193b978fc2d8c01369f1f931987"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a3d154f02c850c9d45b1a0712726368"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a3d154f02c850c9d45b1a0712726368"></a>
<a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1a3d154f02c850c9d45b1a0712726368">m_clientList</a></td></tr>
<tr class="memdesc:a1a3d154f02c850c9d45b1a0712726368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Active client receive requests. <br /></td></tr>
<tr class="separator:a1a3d154f02c850c9d45b1a0712726368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f2d3ad6e5680be8bd777fd16dea395a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f2d3ad6e5680be8bd777fd16dea395a"></a>
<a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a9f2d3ad6e5680be8bd777fd16dea395a">m_clientFreeList</a></td></tr>
<tr class="memdesc:a9f2d3ad6e5680be8bd777fd16dea395a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unused client receive info structs. <br /></td></tr>
<tr class="separator:a9f2d3ad6e5680be8bd777fd16dea395a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ef54b2731462b671e475daa06b09290"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ef54b2731462b671e475daa06b09290"></a>
<a class="el" href="classerpc_1_1_mutex.html">Mutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1ef54b2731462b671e475daa06b09290">m_clientListMutex</a></td></tr>
<tr class="memdesc:a1ef54b2731462b671e475daa06b09290"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classerpc_1_1_mutex.html" title="Mutex. ">Mutex</a> guarding the client active and free lists. <br /></td></tr>
<tr class="separator:a1ef54b2731462b671e475daa06b09290"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interposer to share transport between client and server. </p>
<p>Allocates memory for client receive request info. This memory is never freed. It is put on a free list and is reused for future client receives. The class will allocate as many client receive info structs as the maximum number of simultaneous client receive requests from different threads. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a70264ee3caa115ea56ec5333a0132394"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void erpc::TransportArbitrator::setSharedTransport </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classerpc_1_1_transport.html">Transport</a> *&#160;</td>
          <td class="paramname"><em>shared</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function set shared client/server transport. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">shared</td><td>Shared client/server transport. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af16c7af785a26649dc822a025b8bdd27"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void erpc::TransportArbitrator::setCodec </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classerpc_1_1_codec.html">Codec</a> *&#160;</td>
          <td class="paramname"><em>codec</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function set codec. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">codec</td><td><a class="el" href="classerpc_1_1_codec.html" title="Abstract serialization encoder/decoder interface. ">Codec</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a67fb2d8bab8f754bf07d2caefff86b7d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1fc8ee09230e9b0b68c44e013a09c1ca">TransportArbitrator::client_token_t</a> TransportArbitrator::prepareClientReceive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classerpc_1_1_request_context.html">RequestContext</a> &amp;&#160;</td>
          <td class="paramname"><em>request</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a client request to the client list. </p>
<p>This call is made by the client thread prior to sending the invocation to the server. It ensures that the transport arbitrator has the client's response message buffer ready in case it sees the response before the client even has a chance to call <a class="el" href="classerpc_1_1_transport_arbitrator.html#aba5660b83cd5f9ca55eaa362c84c7916" title="Receive method for the client. ">clientReceive()</a>.</p>
<p>A token is returned to the client </p>

</div>
</div>
<a class="anchor" id="aba5660b83cd5f9ca55eaa362c84c7916"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__infra.html#ga5f8872e58f09a16d192bf664f9898651">erpc_status_t</a> TransportArbitrator::clientReceive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classerpc_1_1_transport_arbitrator.html#a1fc8ee09230e9b0b68c44e013a09c1ca">client_token_t</a>&#160;</td>
          <td class="paramname"><em>token</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Receive method for the client. </p>
<p>Blocks until the a reply message is received with the expected sequence number that is associated with <em>token</em>. The client must have called <a class="el" href="classerpc_1_1_transport_arbitrator.html#a67fb2d8bab8f754bf07d2caefff86b7d" title="Add a client request to the client list. ">prepareClientReceive()</a> previously.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">token</td><td>The token previously returned by <a class="el" href="classerpc_1_1_transport_arbitrator.html#a67fb2d8bab8f754bf07d2caefff86b7d" title="Add a client request to the client list. ">prepareClientReceive()</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af252715a89e05928feb33c1e7f8c7cc7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TransportArbitrator::setCrc16 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classerpc_1_1_crc16.html">Crc16</a> *&#160;</td>
          <td class="paramname"><em>crcImpl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This functions sets the CRC-16 implementation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">crcImpl</td><td>Object containing crc-16 compute function. </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented from <a class="el" href="classerpc_1_1_transport.html#a077e72c8afa8caa483220faf45df62c6">erpc::Transport</a>.</p>

</div>
</div>
<a class="anchor" id="a9adeefc97b7e3fa1fdabf36739ad1715"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">TransportArbitrator::PendingClientInfo</a> * TransportArbitrator::addPendingClient </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function adds pending client. </p>
<dl class="section return"><dt>Returns</dt><dd>Pending client information. </dd></dl>

</div>
</div>
<a class="anchor" id="a7e2fe51df4bf80ec12718b1754dc42c5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TransportArbitrator::removePendingClient </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *&#160;</td>
          <td class="paramname"><em>info</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function removes pending client. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Pending client info to remove. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a17b725cac5a35715e0676e92a6c02114"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TransportArbitrator::freeClientList </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structerpc_1_1_transport_arbitrator_1_1_pending_client_info.html">PendingClientInfo</a> *&#160;</td>
          <td class="paramname"><em>list</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function removes pending client list. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">list</td><td>Pending client list to remove. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="erpc__transport__arbitrator_8h_source.html">erpc_transport_arbitrator.h</a></li>
<li>erpc_transport_arbitrator.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul class="foot">
    <li class="footer">Copyright 2016-2020 NXP Semiconductors. All rights reserved.
    </li>
  </ul>
</div>
</body>
</html>
